package sisor.dao;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import sisorEntities.Servidor;;

@Stateless
public class servidorDAOImpl implements servidorDAORemote {

	@PersistenceContext(unitName="sisorEJB")
	private EntityManager em;

	@Override
	public Servidor autentica(int matricula, String senha) {
		Query autentica = em.createNamedQuery("autentica");
		autentica.setMaxResults(1);
		autentica.setParameter("matricula", matricula);
		autentica.setParameter("senha", senha);
		Servidor usr = null;
		try {
			usr = (Servidor) autentica.getSingleResult();
			if(usr!=null) {
				System.err.println("servidor retornou corretamente!");
			}
			
		} catch (NoResultException nnfex) {
			System.err.println(nnfex.getMessage());
		}
		return usr;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Servidor> getServidor(int matriculaServidor) {
		Query consulta = em.createNamedQuery("getOutrosUsuarios");
		consulta.setParameter("matriculaServidor", matriculaServidor);
		return consulta.getResultList();
		
	}

	@Override
	public void cadastrarServidor(Servidor novo) {
		// TODO Auto-generated method stub
		em.persist(novo);
	}

	@Override
	public void removerServidor(int matriculaServidor) {
		// TODO Auto-generated method stub
  Servidor removerUsr = em.getReference(Servidor.class, matriculaServidor);
		
		if (removerUsr != null) {
			em.remove(removerUsr);
		}
	}


	

	@Override
	public void alterarServidor(Servidor servido) {
		// TODO Auto-generated method stub
		em.merge(servido);
		
	}

	@Override
	public boolean isDiretor(int matricula) {
		try {
			Query query = em.createNamedQuery("isDiretor");
			query.setParameter("matricula", matricula);
			query.getSingleResult();
		} catch (NoResultException nrex) {
			return false;		
		}
		return true;
	}
}
